package cn.itcast.com.homework.day822;

import java.util.HashMap;

/**
 * Created by 郭浩 on 2020/8/22 16:04
 */
/*
3. 给定一个字符串数组 words 和一个字符串 chars. 如果一个字符串能被 chars 里面的字符组成，
那么这个字符串就是"好"的(chars里面每个字符只能使用一次)。
求：words 里面所有好的字符串的字符总个数。
比如：
words = ["cat", "bt", "hat", "tree"]
chars = "atach"
好的字符串有 "cat", "hat", 3 + 3 = 6.
输出：6
 */
public class test2 {
    public static void main(String[] args) {

        String chars = "atach";
        String words[] = {"cat", "bt", "hat", "tree"};
        good(chars, words);
    }

    public static void good(String chars, String words[]) {
        //先将chars的值写入hash表
        char[] charArray = chars.toCharArray();
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < chars.length(); i++) {
            map.put(charArray[i], 0);
        }
        System.out.println(map);
        check(map, words);
    }

    public static void check(HashMap<Character, Integer> map, String words[]) {
        //遍历String数组
        //记录好的数量
        int good_num = 0;
        for (int i = 0; i < words.length; i++) {
            String word = words[i];
            char[] chars = word.toCharArray();
            //初始化flag，假如第一个是false直接不用进行循环
            boolean flag = true;
            for (int i1 = 0; i1 < chars.length; i1++) {
                //假如不存在就置为false
                if (!map.containsKey(chars[i1])) {
                    flag = false;
                }
            }
            //如果flag为true则表示是好的
            if (flag == true){
                good_num = good_num + chars.length;
            }
        }
        System.out.println("好的数量：" + good_num);
    }
}
